package com.wsx.first.a;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @author: wangshunxi
 * @date: 2022/5/6 10:20
 * @Description:
 */
public class Main0002 {

/**
 给定两个整数数组，arr1、arr2，数组元素按升序排列；
 假设从arr1、arr2中分别取出一个元素，可构成一对元素；
 现在需要取出k对元素，并对取出的所有元素求和，计算和的最小值；
 注意：两对元素对应arr1、arr2的下标是相同的，视为同一对元素。
 输入两行数组arr1、arr2
 每行首个数字为数组大小size， 0 < size <= 100
 arr1，arr2中的每个元素e， 0< e <1000
 接下来一行，正整数k 0 < k <= arr1.size * arr2.size
 */
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            // 1 1 2
            int[] arr1 = parseArray(scanner.nextLine());
            // 1 2 3
            int[] arr2 = parseArray(scanner.nextLine());
            // 2
            int k = scanner.nextInt();
            solution(arr1, arr2, k);
        }
    }

    private static void solution(int[] arr1, int[] arr2, int k) {
        int initialCapacity = arr1.length * arr1.length;
        List<Integer> sums = new ArrayList<>(initialCapacity);
        for (int x : arr1) {
            for (int y : arr2) {
                sums.add(x + y);
            }
        }
        sums.sort(Integer::compareTo);
        int res = 0;
        for (int i = 0; i < k; i++) {
            res += sums.get(i);
        }
        // 4
        System.out.println(res);
    }

    private static int[] parseArray(String line) {
        String[] split = line.split(" ");
        int[] arr = new int[split.length];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = Integer.parseInt(split[i]);
        }
        return arr;
    }

}
